package com.sj.szxy.courseschedule.constrant;

import com.sj.szxy.courseschedule.entity.course.Course;

/**
 * 排课约束
 * @author Yi Ping
 * @date 2018年3月29日 上午10:52:10 
 * @since 1.0.0
 *
 */
public  class Constraint {
	
	/**
	 * 是否可排指定的课程
	 * @param course
	 * @return
	 */
	public boolean support(Course course) {
		return true;
	};
	
	/**
	 * 添加新的约束
	 * @param newConstraint
	 * @return
	 */
	public Constraint addConstraint(Constraint newConstraint) {
		return new Constraint() {

			@Override
			public boolean support(Course course) {
				return  newConstraint.support(course) &&  super.support(course);
			}

			@Override
			public String toString() {
				
				return newConstraint + "&&" +  Constraint.this;
			}
			
			
		};
	}

	@Override
	public String toString() {
		return this.getClass().getSimpleName() + "@" + hashCode();
	};
	
	
	
}
